Soru & Cevap

ScreenShot Alınan Görselin Boyutunu Ayarlama

09.08.2014 - 02:14

Merhabalar iyi çalışmalar. StoryBoard ViewController' da bir adet ScrollView ve üzerinde UIImageView var. Bu view' ın tamamının ekran görüntüsünü almak istiyorum. Action' da kullandığım kod şu şekilde;

 

[code]

    UIImage* image = nil;

    

    UIGraphicsBeginImageContext(scroll.contentSize);

    {

        CGPoint savedContentOffset = scroll.contentOffset;

        CGRect savedFrame = scroll.frame;

        scroll.contentOffset = CGPointZero;

        scroll.frame = CGRectMake(0, 0, 640, 1136);

        [scroll.layer renderInContext: UIGraphicsGetCurrentContext()];

        image = UIGraphicsGetImageFromCurrentImageContext();

        scroll.contentOffset = savedContentOffset;

        scroll.frame = savedFrame;

    }

    UIGraphicsEndImageContext();

    

    if (image != nil) {

        [UIImagePNGRepresentation(image) writeToFile: @"/tmp/test.png" atomically: YES];

        system("open /tmp/test.png");

    }

    

    NSArray *postItems = @[image];

    

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]

                                            initWithActivityItems:postItems

                                            applicationActivities:nil];

    

    [self presentViewController:activityVC animated:YES completion:nil];

[/code]

 

size' ı 640*1136 olarak almama rağmen dışarıya bu şekilde çıkartamıyorum. ScrollView in size(320,600) ile çıkıyor. Yardımlarınız için teşekkürler...

113 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-2335-1379625106.jpg
rocxteady
09.08.2014 - 03:31

Sorun şu. Sen manuel olarak 640*1136 veriyorsun ama gerçek boyut vermen lazım. Retina istiyorsan ekranın scale değerini şöyle yapman gerekiyor:

[code]CGSize imageSize = CGSizeMake(320, 568);

    UIImage* image = nil;

    UIGraphicsBeginImageContextWithOptions(imageSize, NO, [UIScreen mainScreen].scale);

    {

        CGPoint savedContentOffset = _scrollView.contentOffset;

        CGRect savedFrame = _scrollView.frame;

        _scrollView.contentOffset = CGPointZero;

        _scrollView.frame = CGRectMake(0, 0, _scrollView.contentSize.width, _scrollView.contentSize.height);

        

        [_scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];

        image = UIGraphicsGetImageFromCurrentImageContext();

        _scrollView.contentOffset = savedContentOffset;

        _scrollView.frame = savedFrame;

    }

    UIGraphicsEndImageContext();

    if (image != nil) {

NSArray *postItems = @[image];

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]

                                            initWithActivityItems:postItems                   

                                            applicationActivities:nil];

    [self presentViewController:activityVC animated:YES completion:nil];

    }[/code]

 

Bu sana 640x1136 verecektir.

Erkam KÜCET
11.08.2014 - 09:04
Teşekkür ederim Ulaş hocam...
Ulaş Sancak
11.08.2014 - 09:44
Rica ederim. Yardımcı olduysa cevap lütfen oylayıp kabul ediniz. :)
Erkam KÜCET
09.08.2014 - 03:53
640x1136 olarak cikarmak istiyorum Ulas hocam.
Erkam KÜCET
09.08.2014 - 03:59
Scrollun boyutunuda 640x1136 yaptigim zaman cok buyuk oluyor hocam. Su an mevcut projede 320x600 olarak scroll mevcut. App'in amaci appStore' a uygulama upload ederken istenilen SS'i pratik bir sekilde iPhone frame'inin icine atmak. Yani kullanicidan bir image aliyorum bu image'i iPhone'un ekranina yerlestiriyorum. Daha sonra kullanci save yapiyor fakat appStore'un istegi olculerde cikarmak istiyorum. Tesekkurler Ulas hocam.
Ulaş Sancak
09.08.2014 - 04:32
Düzenledim cevabı.